package com.casic.task;

import cn.hutool.core.date.DateUtil;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;

import java.util.Date;
import java.util.List;

/**
 * @author xudezhi
 * @title: SendHistoryDataTask
 * @projectName iot-platform
 * @description: TODO
 * @date 2021/4/2218:16:20
 */
@Slf4j
@Component
public class SendHistoryDataTask {

    /**
     * restTemplate
     */
    RestTemplate restTemplate=new RestTemplate();

    /**
     * 接口数据
     */
    @Autowired
    DataApi dataApi;

    /**
     * 发送测试数据
     */
//    @Scheduled(cron = "* 30 * * * ?") //每个30分一次
    public void sendData(){

        Date beginTime=DateUtil.parse("2021-04-21 00:01:00","yyyy-MM-dd HH:mm:ss");
        Long btime=beginTime.getTime();//昨天0点时间戳
        Long timespace=2*60*1000l;
        /**
         * 生成请求信息
         */
        JSONObject request=new JSONObject();
        request.put("iot",dataApi.iot); //网关
        request.put("accessKey",dataApi.accessKey); //秘钥
        request.put("equipment",dataApi.equipment); //设备
        for (int i=0;i<24*60/2;i++) {
            btime+=timespace;
            //设备发数情况
            JSONArray data=new JSONArray();
            /**
             * 采集点数据
             */
            List<String> col=dataApi.k;//采集点名称集合
            for (int j= 0; j < col.size(); j++) {
                //发数数据
                JSONObject dataObj=new JSONObject();
                dataObj.put("k",col.get(j));
                if("state".equals(col.get(j))){
                    dataObj.put("v", RandomUtil.randomInt(1,8)%4*1000+1000); //生成1000,2000,3000,4000状态随机数
                }else{
                    dataObj.put("v", RandomUtil.randomInt(1,500)); //1到500的随机数作为值
                }
                dataObj.put("t",btime);
                data.add(dataObj);
            }

            //发数数据data
            request.put("data",data);

            JSONObject result=restTemplate.postForObject(dataApi.url,request,JSONObject.class);//设备发数
            log.info("["+i+"]"+DateUtil.formatDateTime(new Date(btime))+"发数："+request+"响应："+result);

//            ThreadUtil.safeSleep(1000);
        }





    }
}
